Linux下遇到System limit for number of file watchers reached问题

这个问题第一次遇见是在Kylin v10操作系统上,当时是开发web项目启动了node环境之后,控制台直接输出了下面的信息。一开始我以为是系统的问题导致,后来发现并不是。

1
error:System limit for number of file watchers reached

产生原因:

启动如 idea,node 启动 angular 或者 vue 服务的时候,都可能会出现这样的问题。

如报错的字面描述一样,是因为linux系统下,所监听的变化文件数量到达了上限,这时候需要用户自己重新配置最大监听文件数。

解决方案:

1
2
3
4
5
sudo vi /etc/sysctl.conf
# 在最后面加入
fs.inotify.max_user_watches=524288
# 之后运行命令
sudo sysctl -p

from vscode 介绍:

While 524,288 is the maximum number of files that can be watched, if you’re in an environment that is particularly memory constrained, you may wish to lower the number. Each file watch takes up 1080 bytes, so assuming that all 524,288 watches are consumed, that results in an upper bound of around 540 MiB.

524,288 是系统可以监听变化的最大文件数,如果内存有限,可以适当的降低该数值,每个被监听的文件会消耗1080字节的内存,假设监听最大值文件数,则会消耗约540MiB的内存空间。